#include "SGPCLFeatureCalculator.h"

namespace sgpcl
{

SGFeatureCalcConfig::SGFeatureCalcConfig()
  : SGPCLJsonConfig()
  , fRadiusForNormal(0.2f)    // 计算法向量用到的搜索半径
  , fRadiusForCurvature(0.2f) // 计算曲率用到的搜索半径
{
}

void SGFeatureCalcConfig::ParseJson(const rapidjson::Value& sJsonRoot)
{
  SGPCLJsonConfig::ParseJson(sJsonRoot, "特征计算");

  // 计算法向量用到的搜索半径
  rapidjson::Value::ConstMemberIterator itMember = sJsonRoot.FindMember("RadiusForNormal");
  if (itMember != sJsonRoot.MemberEnd())
  {
    fRadiusForNormal = itMember->value.GetFloat();
  }
  else
  {
    SG_LOG(
      "未指定\"计算法向量用到的搜索半径，采用默认值\"" + std::to_string(fRadiusForNormal));
  }

  // 计算曲率用到的搜索半径
  itMember = sJsonRoot.FindMember("RadiusForCurvature");
  if (itMember != sJsonRoot.MemberEnd())
  {
    fRadiusForCurvature = itMember->value.GetFloat();
  }
  else
  {
    SG_LOG("未指定\"计算曲率用到的搜索半径，采用默认值\"" + std::to_string(fRadiusForCurvature));
  }

}

}
